package com.hisense.davidmoten.rtree;

import java.util.List;

import com.hisense.davidmoten.rtree.geometry.Geometry;

/**
 * 中文：
 * 表示 RTree 的叶子节点接口，包含具体的条目集合。
 * 泛型参数说明：
 * - T：条目关联的数据类型（载荷/值）。
 * - S：几何类型，需实现 {@link com.hisense.davidmoten.rtree.geometry.Geometry}。
 * 叶子节点不再包含子节点，仅持有若干 {@link Entry}。
 */
public interface Leaf<T, S extends Geometry> extends Node<T, S> {

    /**
     * 中文：
     * 返回该叶子节点持有的所有条目列表。
     * 当仅需要单个条目时，优先使用 {@link #entry(int)} 以获得更好的性能，
     * 避免列表访问或潜在的集合拷贝开销。
     *
     * @return 条目列表
     */
    List<Entry<T, S>> entries();

    /**
     * Returns the ith entry (0-based). This method should be preferred for
     * performance reasons when only one entry is required (in comparison to
     * {@code entries().get(i)}).
     * 
     * 中文：
     * 返回第 i 个条目（0 基）。当只需要一个条目时，应优先使用本方法，
     * 相比 {@code entries().get(i)} 更高效，可避免创建或拷贝集合带来的开销。
     * 
     * @param i 0-based index / 0 基下标
     * @return ith entry / 第 i 个条目
     */
    Entry<T, S> entry(int i);

}